<!DOCTYPE html>



  


<html class="theme-next muse use-motion" lang="zh-Hans">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="theme-color" content="#222">









<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
















  
  
  <link href="/blog/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />







<link href="/blog/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />

<link href="/blog/css/main.css?v=5.1.4" rel="stylesheet" type="text/css" />


  <link rel="apple-touch-icon" sizes="180x180" href="/blog/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/blog/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/blog/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/blog/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="Hexo, NexT" />










<meta property="og:type" content="website">
<meta property="og:title" content="smallmuou&#39;s blog">
<meta property="og:url" content="http://smallmuou.gitee.io/blog/page/14/index.html">
<meta property="og:site_name" content="smallmuou&#39;s blog">
<meta property="og:locale" content="zh-Hans">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="smallmuou&#39;s blog">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/blog/',
    scheme: 'Muse',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://smallmuou.gitee.io/blog/page/14/"/>





  <title>smallmuou's blog</title>
  








</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left 
  page-home">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/blog/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">smallmuou's blog</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle"><a href="https://github.com/smallmuou">https://github.com/smallmuou</a></p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/blog/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/blog/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
            
            归档
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/blog/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/blog/about/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      

      
    </ul>
  

  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            
  <section id="posts" class="posts-expand">
    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2016/02/03/2016-02-03-APNS统计分析/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2016/02/03/2016-02-03-APNS统计分析/" itemprop="url">APNS统计分析</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2016-02-03T00:00:00+08:00">
                2016-02-03
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/IOS/" itemprop="url" rel="index">
                    <span itemprop="name">IOS</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>最近有个业务是设备需要呼叫手机，要求手机在后台的情况下，也要接收到来电；iPhone手机在后台也能响应呼叫，应该就只有VOIP和推送了。VOIP是指手机后台化之后，系统会维持一条与服务器的长连接，当设备呼叫手机端时，服务器往手机发送一条呼叫指令，系统接收到呼叫指令后，会唤醒应用并执行相应代码，并本地推送. 推送是指通过APNS推送呼叫信息到手机，手机展现远程推送.关于VOIP，发现失败率挺高的，与想通过APNS实现，那么首要的工作就是对APNS的推送到达率和实时性需要做个测试，这里记录推送的统计过程.</p>
<h3 id="统计方式"><a href="#统计方式" class="headerlink" title="统计方式"></a>统计方式</h3><p>这里采取的是通过抓包来获取推送时间，抓包的话就必须了解APNS推送的端口信息，通过<a href="https://support.apple.com/zh-cn/HT203609" target="_blank" rel="noopener">苹果官网</a>可以知道</p>
<pre>
TCP 端口 5223：用于与 Apple 推送通知服务 (APNs) 通信
TCP 端口 2195：用于向 APNs 发送通知
TCP 端口 2196：用于 APNs 反馈服务
TCP 端口 443：设备无法在端口 5223 上与 APNs 通信时，仅在 Wi-Fi 上备用
</pre>
一般是在5223上抓包就可以，也有发现是需要在443才能抓到.这里主要对5223进行抓包.另外推送都是来自17.0.0.0/8服务器

* 发送端 - 通过java-apns来往APNS发送推送
<pre>
java -cp .:../lib/apns-0.1.5-jar-with-dependencies.jar:../lib/log4j-1.2.12.jar:../lib/slf4j-log4j12-1.7.13.jar Pusher 10 20> send_org.log
</pre>
* 接收端 - 通过rvictl映射手机的网卡到rvi0
<pre>
sudo tcpdump -tttt -i rvi0 src port 5223 > recv_org.log
</pre>

<ul>
<li>痛点</li>
</ul>
<p>由于APNS推送后的内容是加密的，因此无法确认发送和收到是否属于同一条，目前采用的是发送不同内容，收到的内容长度不同来区分，我这里做了个统计信息如下:</p>
<p>Payload长度|收到长度<br>|:–|:–<br>0|250<br>10|266<br>26|282<br>42|298<br>58|314<br>74|330</p>
<p>PS: 里面有规律，大家自行查找.</p>
<p><strong>另外，有发现有时推送有过来，但长度并不是预定中</strong></p>
<h3 id="统计分析"><a href="#统计分析" class="headerlink" title="统计分析"></a>统计分析</h3><p>通过send_org.log和recv_org.log对比，记录发送推送后是否在规定时间段内收到抓包信息，有则记录时间，并在最终输出report，详见统计结果.</p>
<ul>
<li>TIME - 时间段</li>
<li>INTERVAL - 发送时长</li>
<li>FROM - 推送服务器</li>
<li>TO - 手机IP</li>
<li>SEND - 发送数目</li>
<li>RECV - 收到数目</li>
<li>LOSE - 未收到数目</li>
<li>RATE - 到达率</li>
<li>AVERAGE REACH TIME - 平均到达时间</li>
<li>DETAIL - 详情</li>
</ul>
<h3 id="统计结果"><a href="#统计结果" class="headerlink" title="统计结果"></a>统计结果</h3><ul>
<li>WIFI下(Production)</li>
</ul>
<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/apns-report-20160202.png" alt="image"></p>
<ul>
<li>电信3G下(Production)</li>
</ul>
<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/apns-report-20160203.png" alt="image"></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/20/2015-11-20-python网络框架之flask/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/20/2015-11-20-python网络框架之flask/" itemprop="url">python网络框架之flask</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-20T00:00:00+08:00">
                2015-11-20
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/后端/" itemprop="url" rel="index">
                    <span itemprop="name">后端</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>常听起有些网站后台是用python来构建的（如豆瓣君），于是teyi去了解下，python的web框架还真不少（python社区果然强大），有django、Tornado、Bottle、flask、web.py等等，在前面『<a href="python构建WEB服务器.html">python构建WEB服务器</a>』介绍过用web.py来构建网站，当时看起来非常简单，今天我们来介绍另一个框架flask.</p>
<p>Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ，模板引擎则使用 Jinja2. 可以通过pip安装flask</p>
<pre>
pip install flask
</pre>

<p>下面来个栗子.</p>
<pre>
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():    
    return "Hello World!"

if __name__ == "__main__":
    app.run()
</pre>

<p>运行</p>
<pre>
python hello.py
</pre>

<p>浏览器输入<a href="http://localhost:5000/即可" target="_blank" rel="noopener">http://localhost:5000/即可</a></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/20/2015-11-20-树莓派利用motion来搭建流媒体及运动检测/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/20/2015-11-20-树莓派利用motion来搭建流媒体及运动检测/" itemprop="url">树莓派利用motion来搭建流媒体及运动检测</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-20T00:00:00+08:00">
                2015-11-20
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <h3 id="1-确认是否含有-dev-video0"><a href="#1-确认是否含有-dev-video0" class="headerlink" title="1. 确认是否含有/dev/video0"></a>1. 确认是否含有/dev/video0</h3><p>通过ls参看是否有/dev/video0, 若没有则可以通过如下命令生成.</p>
<pre>
sudo modprobe bcm2835-v4l2
</pre>
当然需要写入/etc/rc.local以保证开机运行.

如果发现'No device'， 则需要在/boot/config.txt添加如下内容

<pre>
# Sets for bcm2385-v4l2 driver to work
start_x=1
gpu_mem=128
</pre>

<h3 id="2-安装motion"><a href="#2-安装motion" class="headerlink" title="2. 安装motion"></a>2. 安装motion</h3><pre>
sudo apt-get install motion
</pre>

<h3 id="3-修改配置"><a href="#3-修改配置" class="headerlink" title="3. 修改配置"></a>3. 修改配置</h3><p>vim /etc/motion/motion.conf</p>
<pre>
stream_localhost off
webcontrol_localhost off
target_dir /media/Pinocchio/Camera #照片生成路径
</pre>

<p>当然也可以定制宽高、方向</p>
<pre>
width 640
height 480
rotate 180
</pre>

<h3 id="4-运行motion"><a href="#4-运行motion" class="headerlink" title="4. 运行motion"></a>4. 运行motion</h3><pre>
sudo motion
</pre>

<h3 id="5-可以在target-dir看到生成的图片（摄像头需要有变化）"><a href="#5-可以在target-dir看到生成的图片（摄像头需要有变化）" class="headerlink" title="5. 可以在target_dir看到生成的图片（摄像头需要有变化）"></a>5. 可以在target_dir看到生成的图片（摄像头需要有变化）</h3><h3 id="6-当然也可以通过浏览器访问"><a href="#6-当然也可以通过浏览器访问" class="headerlink" title="6. 当然也可以通过浏览器访问"></a>6. 当然也可以通过浏览器访问</h3><p><a href="http://192.168.2.100:8081" target="_blank" rel="noopener">http://192.168.2.100:8081</a><br><img src="http://7ximmr.com1.z0.glb.clouddn.com/raspberry-motion.png" alt="image"></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/19/2015-11-19-树莓派搭建视频流服务器/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/19/2015-11-19-树莓派搭建视频流服务器/" itemprop="url">树莓派搭建视频流服务器</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-19T00:00:00+08:00">
                2015-11-19
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>可以利用树莓派搭建一个IPC，Google下找到了<a href="http://videos.cctvcamerapros.com/raspberry-pi/how-to-setup-video-streaming-server.html" target="_blank" rel="noopener">此文</a>，非常给力，这里照搬下.</p>
<ul>
<li>安装python-pip - python第三方库安装工具<pre>
sudo apt-get install python-pip
</pre></li>
<li>安装picamera<pre>
pip install picamera
</pre></li>
<li>安装flask - python的web框架<pre>
sudo pip install flask
</pre></li>
<li>flask-video-streaming<pre>
git clone https://github.com/smallmuou/flask-video-streaming
</pre></li>
<li>运行app.py<pre>
python app.py
</pre>

</li>
</ul>
<p>可以看到如下信息</p>
<pre>
[osmc@pawpaw:~/Share/flask-video-streaming$ python app.py
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 211-263-435
</pre>

<ul>
<li>浏览器查看<pre>
http://< your ip >:5000/
</pre>

</li>
</ul>
<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/raspberrypi-video-streaming.png" alt="image"></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/17/2015-11-17-BASH输出TAB键/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/17/2015-11-17-BASH输出TAB键/" itemprop="url">BASH输出TAB键</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-17T00:00:00+08:00">
                2015-11-17
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/SHELL/" itemprop="url" rel="index">
                    <span itemprop="name">SHELL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>有时候shell脚本需要输出TAB键，如脚本生成Makefile</p>
<pre>
makefile() {
cat << EOF
all:build
build:
    make all -C submodules/build
clean:
    make clean -C submodules/build
veryclean:
    make veryclean -C submodules/build
install:
    mkdir -p $PREFIX/include
    mkdir -p $PREFIX/lib
    cp -rf $SOURCE/include/* $PREFIX/include
    cp -rf $SOURCE/lib/* $PREFIX/lib

EOF
}

info 'Generate Makefile ...'
makefile > Makefile
info 'Generate successed.'

</pre>

<p>以上生成的Makefile是有问题的，非TAB键，而应该使用如下方案</p>
<pre>

makefile() {
cat << EOF
all:build
build:
`printf "\t"`make all -C submodules/build
clean:
`printf "\t"`make clean -C submodules/build
veryclean:
`printf "\t"`make veryclean -C submodules/build
install:
`printf "\t"`mkdir -p $PREFIX/include
`printf "\t"`mkdir -p $PREFIX/lib
`printf "\t"`cp -rf $SOURCE/include/* $PREFIX/include
`printf "\t"`cp -rf $SOURCE/lib/* $PREFIX/lib

EOF
}

info 'Generate Makefile ...'
makefile > Makefile
info 'Generate successed.'

</pre>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/12/2015-11-12-树莓派1 B+ OSMC支持HiFiBerry/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/12/2015-11-12-树莓派1 B+ OSMC支持HiFiBerry/" itemprop="url">树莓派1 B+ OSMC支持HiFiBerry</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-12T00:00:00+08:00">
                2015-11-12
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>最新版本的OSMC已经完美地支持了HiFiBerry，大家只要进行相关设置就ok，不用aplay、/etc/modules各种折腾（我就这么过来的）</p>
<h3 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h3><ul>
<li>开启HiFiBerry声卡</li>
</ul>
<pre>
My OSMC -> Pi Config -> Hardware Support -> Soundcard Overlay
选择 hifiberry-dacplus-overlay
</pre>
PS: 这里我是DAC+，因此是hifiberry-dacplus-overlay，还有DAC、DIGI、APM+等各硬件扩展，请自行选择

* 去掉LIRC

<pre>
My OSMC -> Pi Config -> Hardware Support -> Enable LIRC GPIO support
设置NO
</pre>

<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-hifiberry.jpg" alt="image"></p>
<ul>
<li>设置声音输出为HiFiBerry</li>
</ul>
<pre>
Settings -> System -> Audio Output -> Audio output device
设置为:ALSA: Default(snd_rpi_hifiberry_dacplus Analog)
</pre>

<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-audio-ouput-hifiberry.jpg" alt="image"></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/11/2015-11-11-MACOSX写入img到sd卡/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/11/2015-11-11-MACOSX写入img到sd卡/" itemprop="url">MACOSX写入img到sd卡</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-11T00:00:00+08:00">
                2015-11-11
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>最近在整树莓派的声卡，又需要重新装系统，这里记录下如何将img 写入到sd卡</p>
<ul>
<li>格式化<pre>
diskutil list
sudo diskutil unmountDisk /dev/disk3
sudo newfs_msdos -F 16 /dev/disk3
</pre></li>
<li><p>写入</p>
<pre>
sudo dd if=~/Desktop/raspberrypi.dmg of=/dev/disk3
</pre>
</li>
<li><p>卸载</p>
<pre>
sudo diskutil eject /dev/disk3
</pre>
</li>
</ul>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/08/2015-11-08-osmc支持中文/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/08/2015-11-08-osmc支持中文/" itemprop="url">osmc支持中文</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-08T00:00:00+08:00">
                2015-11-08
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>xbmc的缺省字体字符集应该不是gbk的，显示中文很多子都是方块，可以用其他字体替换</p>
<ul>
<li>安装新字体</li>
</ul>
<pre>
sudo apt-get install ttf-wqy-zenhei
</pre>

<ul>
<li>备份旧字体</li>
</ul>
<pre>
sudo mv /usr/share/xbmc/media/Fonts/arial.ttf /usr/share/xbmc/media/Fonts/arial_bak.ttf
</pre>

<ul>
<li>更新字体</li>
</ul>
<pre>
sudo cp /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc /usr/share/xbmc/media/Fonts/arial.ttf
</pre>

<ul>
<li>设置字体为Arial</li>
</ul>
<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-font-arial.jpg" alt="image"></p>
<ul>
<li>设置语言为中文</li>
</ul>
<p><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-language-chinese.jpg" alt="image"></p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/08/2015-11-08-搭建自己的AppleTV/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/08/2015-11-08-搭建自己的AppleTV/" itemprop="url">搭建自己的AppleTV</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-08T00:00:00+08:00">
                2015-11-08
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/树莓派/" itemprop="url" rel="index">
                    <span itemprop="name">树莓派</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>大家知道，我们可以通过AirPlay将手机的内容投放到电视上，可假如我们不想买AppleTV，有没有实现将手机内容投放到电视上，答案是肯定的. 本文将讲述如何利用树莓派搭建自己的AppleTV.</p>
<h4 id="1-为树莓派安装xmbc"><a href="#1-为树莓派安装xmbc" class="headerlink" title="1. 为树莓派安装xmbc"></a>1. 为树莓派安装xmbc</h4><p>打开<a href="https://osmc.tv/网站，进入Download页面，根据您电脑系统类型，下载相应的安装工具，我的是MAC，因此下载Mac" target="_blank" rel="noopener">https://osmc.tv/网站，进入Download页面，根据您电脑系统类型，下载相应的安装工具，我的是MAC，因此下载Mac</a> OS X版本安装软件<br><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-download.png" alt="image"><br>打开下载后的软件，选择语言、树莓派1代或2代（根据自己的树莓派）、sf卡（记得插入sf卡）<br><img src="https://osmc.tv/content/uploads/2014/09/installer_1024.png" alt="image"></p>
<h4 id="2-配置xmbc"><a href="#2-配置xmbc" class="headerlink" title="2. 配置xmbc"></a>2. 配置xmbc</h4><p>安装完毕后，将sf卡插入树莓派、连接hdmi、网线，并接电源. 启动完成后会出现如下界面（非常漂亮）<br><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-home.jpg" alt="image"></p>
<p>接上鼠标，进入Settings-&gt;Services界面，如下<br><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-airplay.jpg" alt="image"></p>
<h4 id="3-搞定"><a href="#3-搞定" class="headerlink" title="3. 搞定"></a>3. 搞定</h4><p>打开iPhone或iPad，并打开一个支持AirPlay的应用，我是用qq音乐<br><img src="http://7ximmr.com1.z0.glb.clouddn.com/osmc-airplay-test.png" alt="image"></p>
<h4 id="4-展望"><a href="#4-展望" class="headerlink" title="4. 展望"></a>4. 展望</h4><p>当然，可以通过ssh进入系统，自定义</p>
<pre>
ssh osmc@< 您的树莓派ip > 

密码：osmc
</pre>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://smallmuou.gitee.io/blog/blog/2015/11/06/2015-11-06-python构建WEB服务器/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="smallmuou">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="smallmuou's blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/blog/2015/11/06/2015-11-06-python构建WEB服务器/" itemprop="url">python构建WEB服务器</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-11-06T00:00:00+08:00">
                2015-11-06
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/后端/" itemprop="url" rel="index">
                    <span itemprop="name">后端</span>
                  </a>
                </span>

                
                
              
            </span>
          

          

          
          

          

          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>本文将利用web.py来快速构建一个WEB服务器，看下面<br>test.py</p>
<pre>

import web

urls=(
    '/','index',
)
app = web.application(urls,globals())

class index:
    def GET(self):
        return "Hello, world!"

if __name__ == '__main__':
        app.run()
</pre>
没错，就上面这么多，当然还得装下web.py

<pre>
sudo easy_install web.py
</pre>

<p>运行上面的py代码</p>
<pre>
python test.py
</pre>

<p>成功后，会打印如下信息</p>
<pre>
http://0.0.0.0:8080/
</pre>

<p>在网页中输入<a href="http://127.0.0.1/8080/就可以看到Hello" target="_blank" rel="noopener">http://127.0.0.1/8080/就可以看到Hello</a>, world!</p>

          
        
      
    </div>
    
    
    

    

    

    

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </div>
  
  
  
  </article>


    
  </section>

  
  <nav class="pagination">
    <a class="extend prev" rel="prev" href="/blog/page/13/"><i class="fa fa-angle-left"></i></a><a class="page-number" href="/blog/">1</a><span class="space">&hellip;</span><a class="page-number" href="/blog/page/13/">13</a><span class="page-number current">14</span><a class="page-number" href="/blog/page/15/">15</a><span class="space">&hellip;</span><a class="page-number" href="/blog/page/20/">20</a><a class="extend next" rel="next" href="/blog/page/15/"><i class="fa fa-angle-right"></i></a>
  </nav>



          </div>
          


          

        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      

      <section class="site-overview-wrap sidebar-panel sidebar-panel-active">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <p class="site-author-name" itemprop="name">smallmuou</p>
              <p class="site-description motion-element" itemprop="description"></p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/blog/archives/">
              
                  <span class="site-state-item-count">197</span>
                  <span class="site-state-item-name">日志</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-categories">
                <a href="/blog/categories/index.html">
                  <span class="site-state-item-count">12</span>
                  <span class="site-state-item-name">分类</span>
                </a>
              </div>
            

            

          </nav>

          

          
            <div class="links-of-author motion-element">
                
                  <span class="links-of-author-item">
                    <a href="https://github.com/smallmuou" target="_blank" title="GitHub">
                      
                        <i class="fa fa-fw fa-globe"></i>GitHub</a>
                  </span>
                
            </div>
          

          
          

          
          

          

        </div>
      </section>

      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <div class="copyright">&copy; <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">smallmuou</span>

  
</div>

    <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

    <span id="busuanzi_container_site_pv">总访问量<span id="busuanzi_value_site_pv"></span>次</span>
    <span class="post-meta-divider">|</span>



  <div class="powered-by">由 <a class="theme-link" target="_blank" href="https://hexo.io">Hexo</a> 强力驱动</div>



  <span class="post-meta-divider">|</span>



  <div class="theme-info">主题 &mdash; <a class="theme-link" target="_blank" href="https://github.com/iissnan/hexo-theme-next">NexT.Muse</a> v5.1.4</div>




        







        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  
    <script type="text/javascript" src="/blog/lib/jquery/index.js?v=2.1.3"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/velocity/velocity.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  


  


  <script type="text/javascript" src="/blog/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/blog/js/src/motion.js?v=5.1.4"></script>



  
  

  

  


  <script type="text/javascript" src="/blog/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  












  





  

  

  

  
  

  

  

  

</body>
</html>
